package com.situ.store.service.impl;

import java.util.List;

import javax.servlet.http.HttpSession;

import com.situ.store.dao.UserDao;
import com.situ.store.entity.User;
import com.situ.store.service.UserService;
import com.situ.store.util.MD5Util;
import com.situ.store.util.StringUtil;
import com.situ.store.vo.LayuiTableVO;
import com.situ.store.vo.ResVO;

public class UserServiceImpl implements UserService {

	UserDao dao = new UserDao();

	// 添加
	@Override
	public void add(User user) {
		dao.add(user);
	}

	// 删除
	@Override
	public void del(Integer id) {
		dao.del(id);
	}

	// 修改
	@Override
	public void edit(User user) {
		dao.edit(user);
	}

	// 查询
	@Override
	public List<User> selectAll(Integer page, Integer limit, String keyword) {
		return dao.selectAll((page - 1) * limit, limit, keyword);
	}

	@Override
	public LayuiTableVO userList(Integer page, Integer limit, String keyword) {
		String[] s = StringUtil.insertEmpty(keyword);
		List<User> list = selectAll(page, limit, s[0]);
		LayuiTableVO vo = new LayuiTableVO();
		vo.setCode(0);
		vo.setData(list);
		vo.setCount(count(s[0])); // 统计具体几条
		return vo;
	}

	// 登录验证
	@Override
	public ResVO check(String username, String password, HttpSession session) {
		List<User> l = dao.selectUserByName(username);
		ResVO vo = new ResVO();
		boolean flag = l.size() > 0 && l.get(0).getPwd().equals(MD5Util.md5(password));
		if (flag) {
			session.setAttribute("currentUser", l.get(0));
			session.setAttribute("username", l.get(0).getName());
			vo.setCode(0);
			vo.setMsg("登陆成功");
		} else {
			vo.setCode(1);
			vo.setMsg("用户名或密码错误！");
		}
		return vo;
	}

	// 修改密码----------->修改
	@Override
	public ResVO changePwd(String newPwd, HttpSession session) {
		ResVO vo = new ResVO();
		Object obj = session.getAttribute("currentUser");
		User u = (User) obj;
		dao.changePwd(MD5Util.md5(newPwd), u.getName());
		vo.setMsg("修改成功！请重新登录！");
		return vo;
	}

	// 修改密码------>验证旧密码
	@Override
	public ResVO checkOldPwd(String oldPwd, HttpSession session) {
		ResVO vo = new ResVO();
		Object obj = session.getAttribute("currentUser");
		User u = (User) obj;
		if (!selectByName(u.getName()).getPwd().equals(MD5Util.md5(oldPwd))) {
			vo.setCode(1);
			vo.setMsg("输入的旧密码有误，请重新输入！");
			return vo;
		}
		return vo;
	}

	// 根据用户id查
	@Override
	public ResVO selectById(Integer id) {
		ResVO vo = new ResVO();
		List<User> l = dao.selectById(id);
		User u = l.size() > 0 ? l.get(0) : null;
		if (u == null) {
			vo.setCode(1);
			vo.setMsg("该用户不存在，请刷新后重试");
		} else {
			vo.setData(u);
		}
		return vo;
	}

	// 根据用户名查
	@Override
	public User selectByName(String name) {
		List<User> l = dao.selectByName(name);
		return l.size() > 0 ? l.get(0) : null;
	}

	// 查数量
	@Override
	public Long count(String keyword) {
		return dao.count(keyword);
	}

	// 保存
	@Override
	public ResVO save(User user, HttpSession session) {
		ResVO vo = new ResVO();
		Object obj = session.getAttribute("currentUser");
		User u = (User) obj;
		user.setCreateby(u.getName());
		if (user.getId() == null) {
			if (selectByName(user.getName()) != null) {
				vo.setCode(1);
				vo.setMsg("用户名已被注册，请重新输入！");
				return vo;
			}
			user.setPwd(MD5Util.md5(user.getPwd()));
			add(user);
		} else {
			if (selectByName(user.getName()).getId() != user.getId()) {
				vo.setCode(1);
				vo.setMsg("用户名已被注册，请更换！");
				return vo;
			}
			edit(user);
		}
		return vo;
	}

	@Override
	public void resetPwd(Integer id){
		dao.resetPwd(id);
	}




}
